什么时候使用GridView和ListView,因为他们做同样的事情? | 您所在的位置:网站首页 › java gridview › 什么时候使用GridView和ListView,因为他们做同样的事情? |
ListView对GridView ListView:孩子是一维的(方向可以是水平的,也可以是垂直的). GridView:这些孩子是二维排列的.即使您没有使用使其可视化为2D的属性(通过设置crossAxisCount: 1),它仍然被认为是2D的。 不同的ListView构造函数 ListView ListView( children: [allItems], );ListView.builder 它创建一个易于生成或需要动态创建的项的列表。 ListView.builder( itemBuilder: (context, index) => Text("Item $index"), itemCount: 10, // not required );ListView.separated 类似于ListView.builder。动态创建项和分隔符需要itemBuilder和separatorBuilder。 ListView.separated( itemBuilder: (context, index) => Text("Item $index"), separatorBuilder: (context, index) => Divider(), itemCount: 10, // not required );如果没有指定itemCount,它将在用户滚动时创建无限数量的子级。 ListView.custom 使用自定义SliverChildDelegate。它需要一个childrenDelegate,它提供了自定义子模型的其他方面的能力。 ListView.custom( childrenDelegate: mySliverChildDelegate, );不同的GridView构造函数 GridView.count 它创建一个横轴上有固定数量的瓷砖的布局。 GridView.count( crossAxisCount: 2, // how many items you want across the grid children: [allItems], );GridView.extent 它使用具有最大交叉轴范围的瓷砖创建布局。 GridView.extent( maxCrossAxisExtent: 90.0, // maximum space each child can occupy children: [allItems], );GridView.builder 若要创建具有大量(或无限)子节点的网格,请执行以下操作。 使用SliverGridDelegateWithFixedCrossAxisCount或SliverGridDelegateWithMaxCrossAxisExtent作为gridDelegate参数。 GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, ), itemCount: 6, itemBuilder: (BuildContext context, int index) { return itemWidget; } );GridView.custom 使用自定义SliverChildDelegate。 GridView.custom( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, ), childrenDelegate: mySliverChildDelegate, );注: 构造函数GridView、GridView.builder和GridView.custom明确要求将“网格委托”传递给命名参数gridDelegate。当其他构造函数GridView.count和GridView.extent为您创建这样一个类对象时。参考资料: ListView类和GridView类的颤振文档YouTube视频在ListView和GridView上的颤音。请看这篇由格雷格·佩里( Greg )撰写的关于深入研究GridView小部件的精彩文章。 |
CopyRight 2018-2019 实验室设备网 版权所有 |